/*
 * Copyright (c) 2010 Curtis Boyden.  All rights reserved. 
 * This software was developed by Curtis Boyden and is provided under the terms 
 * of the GNU Lesser General Public License, Version 2.1. You may not use 
 * this file except in compliance with the license. If you need a copy of the license, 
 * please go to http://www.gnu.org/licenses/lgpl-2.1.txt. The Original Code is ejMud
 * (Ewerp Java MUD).  The Initial Developer is Curtis Boyden.
 *
 * Software distributed under the GNU Lesser Public License is distributed on an "AS IS" 
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or  implied. Please refer to 
 * the license for the specific language governing your rights and limitations.
*/

package com.ewerp.mud.characters;

import java.util.ArrayList;
import java.util.List;

import com.ewerp.mud.entities.IObjectId;
import com.ewerp.mud.entitycore.IEntityProperty;
import com.ewerp.mud.entitycore.gender.IGender;
import com.ewerp.mud.locations.rooms.IRoom;
import com.ewerp.mud.locations.rooms.RoomId;

public abstract class BaseCharacter implements ICharacter {

	protected List<IEntityProperty> properties = new ArrayList<IEntityProperty>();

	protected IRoom currentRoom;
    protected IObjectId id;
    protected IGender gender;
    
    @Override
    public void setRoom(IRoom room) {
        currentRoom = room;
    }
    
    @Override
    public IRoom getRoom() {
        return currentRoom;
    }

    @Override
    public IObjectId getId() {
        return id;
    }

    @Override
    public void setId(IObjectId id) {
        this.id = id;
    }

    @Override
    public IGender getGender() {
        return gender;
    }

    @Override
    public void setGender(IGender gender) {
        this.gender = gender;
    }

    @Override
    public List<IEntityProperty> getProperties() {
		return properties;
	}

    @Override
	public void setProperties(List<IEntityProperty> properties) {
		this.properties = properties;
	}
    
    @Override
    public long getSerial() {
    	return id == null ? -1 : id.getSerial();
    }
    
    @Override
    public void setSerial(long id) {
    	if(this.id == null) {
    		this.id = new RoomId();
    	}
    	
    	this.id.setSerial(id);
    }
}
